_enter_protected_mode:
	;    关闭中断
	;    cli
	;    打开 A20 地址线
	in   al, 0x92
	or   al, 0x02
	out  0x92, al
	;    加载 GDT
	lgdt [gdt_base]
	;    设置 cr0 pe 位
	mov  eax, cr0
	or   eax, 0x1
	mov  cr0, eax
	;    刷新流水线
	;jmp CODE_SELECTOR:head_start
	jmp  0x08:head_start

gdt_zero:
	dq 0

gdt_code:
	;dq CODE_SEC_DESC
	dq  0x00cf9a000000ffff

gdt_data:
	;dq DATA_SEC_DESC
	dq  0x00cf92000000ffff

gdt_video:
	;dq VIDEO_SEC_DESC
	dq  0x00c09a0b80000007

	GDT_SIZE equ $ - gdt_zero
	GDT_LIMIT equ GDT_SIZE - 1
	;     预留 60 个坑
	times 60 dq 0
	;     目前这里占用 (4+60)*8 = 512(0x200) 字节空间.

	;     0x7e00 + 0x200 = 0x8000
	;     这里留 0x100 空间 给以后硬件检测存储信息.
	times 0x100 db 0
	;     0x8100

gdt_base:
	dw GDT_LIMIT
	dd gdt_zero

